package cc.comac.mom.datahandlers.entity;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;

import cc.comac.mom.bean.EquipDevHistory;
import cc.comac.mom.bean.EquipDevHistoryBean;
import cc.comac.mom.bean.base.LimitPageBean;
import cc.comac.mom.dao.entity.EquipDevHistoryDao;
import cc.comac.mom.entity.EquipDevHistoryEntity;
import cc.comac.mom.util.BaseEntityDataUtil;
import cc.comac.mom.util.ResultBean;
@Component
@Transactional
public class EquipDevHistoryDataHandler extends ServiceImpl<EquipDevHistoryDao, EquipDevHistoryEntity>{

	@Autowired
	private EquipDevHistoryDao equipDevHistoryDao;
	
	@Autowired
	private BaseEntityDataUtil baseEntityDataUtil;
	
	// 新增设备履历数据
	public ResultBean insertHistory(EquipDevHistory EquipDevHistory) {
		ResultBean resultBean = new ResultBean(true);
		EquipDevHistoryEntity innerData = EquipDevHistory.getInnerData();
		if (innerData.getDevId() == 0) {
			throw new RuntimeException("无法获取设备信息！");
		}
		baseEntityDataUtil.setBaseEntityData(innerData);
		equipDevHistoryDao.insert(innerData);
		return resultBean;
	}
	// 批量新增设备履历数据
	public ResultBean batchInsertHistory(List<EquipDevHistory> list) {
		ResultBean resultBean = new ResultBean(true);
		if (list.size() > 0) {
			List<EquipDevHistoryEntity> entityList = new ArrayList<EquipDevHistoryEntity>();
			for (EquipDevHistory equipDevHistory : list) {
				EquipDevHistoryEntity innerData = equipDevHistory.getInnerData();
				if (innerData.getDevId() == 0) {
					throw new RuntimeException("无法获取备件信息！");
				}
				baseEntityDataUtil.setBaseEntityData(innerData);
				entityList.add(innerData);
			}
			this.saveBatch(entityList, entityList.size());
		}
		return resultBean;
	}

	// 分页查询所有设备履历数据
	public ResultBean selectBySomeFields(EquipDevHistoryBean equipDevHistoryBean) {
		ResultBean resultBean = new ResultBean(true);
		if (equipDevHistoryBean.getPageNum() == 0) {
			equipDevHistoryBean.setPageNum(1);
		}
		if (equipDevHistoryBean.getPageSize() == 0) {
			equipDevHistoryBean.setPageSize(10);
		}
		int num = (equipDevHistoryBean.getPageNum()-1)*equipDevHistoryBean.getPageSize();
		equipDevHistoryBean.setPageNum(num);
		List<EquipDevHistoryBean> selectBySomeFields = equipDevHistoryDao.selectBySomeFields(equipDevHistoryBean);
		int selectCountBySomeFields = equipDevHistoryDao.selectCountBySomeFields(equipDevHistoryBean);
		LimitPageBean<EquipDevHistoryEntity> limitPageBean = new LimitPageBean<EquipDevHistoryEntity>();
		limitPageBean.setEntityList(selectBySomeFields);
		limitPageBean.setPageNum(num);
		limitPageBean.setPageSize(equipDevHistoryBean.getPageSize());
		limitPageBean.setPageCount((int)Math.ceil(selectCountBySomeFields/equipDevHistoryBean.getPageSize()));
		limitPageBean.setTotalQuantity(selectCountBySomeFields);
		resultBean.setObject(limitPageBean);
		return resultBean;
	}
}
